var Stringify:any=function(obj:any){
  let type:any=typeof obj; 
  // console.log(type,1)
  // 判断是否为对象
  // console.log(type !== "object",3)
  if(type!=="object"){
    // 如果数据类型不是对象，先判断是否为字符串/underfined/fun函数
   if(/string|boolean|number/.test(type)) {
    //  如果是，直接在原来的基础上拼接成字符串
     obj='"'+obj+'"';
    //  console.log(obj,2)
      return String(obj)
   }else if(/undefined|function/){
     return ;
   }
  ;
  }else{
  // 当obj是对象时再判断是否为数组
   let arr=Array.isArray(obj);
  //  console.log(arr)
   let json=[];
  //  遍历object中的每一项，判断每一项中的具体数值类型
 for(let k in obj){
   let item=obj[k]
  //  判断每一项数据类型
  let type2=typeof item;
 
  if(/string/.test(type2)){
    item='"'+item+'"';
  }else if(type2==="object"){
    // 如果item还是object
    item=Stringify(item)
  }
  else if(/undefined|function/.test(type2)){
  //  如果这一项为undefined/function，需要跳过此环节，因为最后的结果中不会显示
    continue;
    // return item 
  }
  
  // arr为true说明是数组 如果是false说明是对象
  json.push((arr?"":'"'+k+'":')+item)
  // console.log(json,4)
 }
 return (arr?'[':'{')+json.join(",")+(arr?']':'}')  
 
  }
}
// console.log(Stringify(5))
// console.log(Stringify([1,false,"a"]))
// console.log(Stringify({a:1,b:undefined,c:function(){}}))
// console.log(Stringify(undefined))
// console.log(Stringify({a:1,b:undefined,c:{h:1,f:false}}))



var Parse:any = function (obj:any) {
  // eval是以{}作为开始和结束的标志，在 js 中，它会被当成一个语句块来处理，所以必须强制性的将它转换成一种表达式。加上圆括号的目的是迫使 eval 函数在处理 JavaScript 代码的时候强制将括号内的表达式（expression）转化为对象，而不是作为语句（statement）来执行。
  return eval("(" + obj + ")");
  // let type=typeof obj1;
  // if(type!=="object"){
  //   if(/string|boolean|number/.test(type)){
  //     return obj1;
  //   }
  // }else{
  //   // 如果是object就判断是不是数组
  //   let arr=Array.isArray(obj1);
  // //  console.log(arr)
  //  let json:any=[];
  // //  遍历item,判断每一项的数据类型
  //  for (var k in obj1){
  //   //  let item=obj1[k]
  //    let type1=typeof k;
  //    if(/string/.test(type1)){
  //      var key=eval("("+k+")")
  //      console.log(key)
  //    }
  //   json.push(arr?obj1[k]:key+":"+obj1[k])
 
  //  }
  //  return (arr?'[':'{')+json+(arr?']':'}') 

  // }

};
// console.log(Parse(Stringify(5)))
// console.log(Parse(Stringify([1,false,"a"])))
// console.log(Parse(Stringify({a:1,b:undefined,c:function(){}})))
// console.log(Parse(Stringify(undefined)))
// console.log(Parse(Stringify({a:1,b:undefined,c:{h:1,f:false}})))


module.exports={Stringify,Parse};







